問題解説: Xen 筆記

1問目

問題文

LinuxカーネルでXenが動作するアーキテクチャとして最も近いものを答えてください。

  • KVM
  • Docker
  • VirtualBox
  • Hyper-V

解説

  • KVM
    • ネイティブ型ハイパーバイザ
    • モノリシックカーネルアーキテクチャ
  • Docker
    • アプリケーションコンテナ
  • VirtualBox
    • ホスト型ハイパーバイザ
  • Hyper-V
    • ネイティブ型ハイパーバイザ
    • マイクロカーネルアーキテクチャ
  • OpenVZ
    • OSコンテナ

Docker, OpenVZと言ったソフトはコンテナ仮想化であり、カーネルを全ての仮想マシンで共有してユーザ空間を隔離する技術です。

VirtualBoxはQemuと同じように、OSの上でソフトウェアを起動し、OSの機能を利用して仮想化を行う技術です。

KVM・Xen・Hyper-Vと言ったソフトは、仮想化とその管理の機能を含めたOS制御全ての機能をカーネルに含めたアーキテクチャです。

このうち、KVMでは管理カーネル上でその他のプログラムが動作しますが、
Xenではdom0と呼ばれる管理用の仮想マシンが作成され、その上でカーネルに対して仮想化サーバーの起動などを命令します。
Hyper-VはXenと同様に、管理を行うための仮想マシンが作成され、その上で管理用のプログラムやGUIが動作しています。

Xenでは、管理用の仮想マシンをDomain-0(dom0)、その他の仮想マシンをDomain-U(domU)と呼び、
Hyper-Vではそれぞれ親パーティション (Root Partition, Parent Partition)、子パーティション (Child Partition)と呼びます。

講評

調べればわかる問題ということもあり、問題の正答率は高かったです。
誤答を見ると、同じLinux OS上で動作するということからか「KVM」を選択するチームも見られました。
仮想化を扱う際にはその仮想化の動作原理を知るとトラブルシューティングの際に便利なことがあります。

2問目

問題文

Xenのトラブルシューティングを行う際に見るべきファイル・実行するべきコマンドを箇条書きで答えよ。
なおこの問題はファイル・コマンドの出力結果から見ることの出来る情報の種類や重要度により点数が増減する。

解説

Xenでは、ログファイルを /var/log/xen に保存しています。
また、Xenの管理を行うプログラムに xm (以前のバージョンは xl )があります。
Xenのシステムのトラブルシューティングはこれらのファイル・コマンドで充分に行えます。
またその他にも /var/lib/xen/, /var/xen/dump/ に内部で生成されるダンプやデータベースが、
/etc/xenに設定ファイルが、
/proc/xenでXenのカーネル情報が取得できます。

参考: 第32章 Xen para-virtualized ドライバーのトラブルシューティング – Red Hat Customer Portal

その他、この問題では言及していないものとして、現在稼働中の物を確認するためのコマンドとしてのxentop
libvirtを使用している場合はそれに関連するディレクトリ、
ネットワークに関連するトラブルとしては ネットワークのパケットキャプチャなど、仮想マシンのトラブルシューティングでは見るべき部分が多数あります。

今回の問題はXen本体のトラブルを解決するために必要なファイル・コマンド群双方に言及している場合に最高点数を付与しています。
ファイルのみ・コマンドのみの場合は取得できる情報から30%〜70%で付与しています。
その他のトラブルについて解決するためのコマンド類を記述しているチームには、問題の最高点を上限として加点をしています。

講評

問題文と自由記述の欄から、回答に苦労したチームが多かったのではと思います。
問題文に「見るべきファイル・実行するべきコマンド」と明記しており、ファイルとコマンド双方を回答してくれることを想定していたのですが、コマンドのみ・ログファイルのディレクトリのみの回答も複数ありました。
中には20以上のファイル・コマンドを回答として提出したチームもありました。
情報の中からトラブルの原因を見つけ出し解決に漕ぎ着ける為に、トラブルごとに見るべき項目は異なります。
その際に「どの情報が必要か」を考え、その時々で適切なコマンドの実行・ファイルの閲覧を行うことが大切です。
この時に「どのコマンドで何が取得できる」という事を知っておく事はプラスになります。

3問目

問題文

Xenの仮想化方式にPVとHVMがありますが、それぞれの違いについて説明してください。

解説

まずPVですが、これはCPUの機能である仮想化支援がなくてもVMを動作させることができる方式です。ただし、VMを動作させるにはPVに対応するドライバが必要なので、そのドライバを別途インストールする必要があります。また、Xenに対応したゲストOSを用いることで、ハードウェアを触らずに高速動作しますが、メモリマッピングといった直接ハードウェアを触る部分で遅延が発生する欠点があります。
HVMはPVと違い、使用するCPUに仮想化支援の機能が必要です(intelならVT-x, AMDならAMD-V)。HVMはqemuを使用してBIOSや様々なコントローラをエミュレートするため、PVのように専用ドライバをインストールする必要がありません。仮想化支援の機能を使うのでハードウェアを触る処理が高速に行える特徴を持ちます。

講評

XenはAmazonが運営しているAWSに採用されています。そのためか、解答にAWS特有の名称などを用いて説明しているチームが複数ありました。
全体的に見てしっかりと説明しているチームが多かったなと思います。

4問目

問題文

PVとHVMを組み合わせたPVHがりますが、この仮想化方式についてPVとHVMを使って説明してください。

解説

3問目の解説にもある通り、PVはXenに対応したゲストOSを用いることで、ハードウェアを触らずに高速動作しますが、メモリマッピングといった直接ハードウェアを触る部分で遅延が発生します。PVの欠点であるハードウェアを触る処理を、HVMで使われている仮想化支援の機能を使って高速にできるのがPVHとなります。

講評

3問目より4問目の方が回答率が高かったです。